package com.songlanyun.modules.shop.model.dto;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.songlanyun.common.drive.RootEntity;
import com.songlanyun.common.drive.ValueObject;
import com.songlanyun.common.validator.group.UpdateGroup;
import com.songlanyun.modules.account.entity.AccountEntity;
import com.songlanyun.modules.user.entity.SysUserEntityDTO;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 商家表
 *
 * @author Mark
 * @email sunlightcs@gmail.com
 * @date 2020-11-03 14:34:03
 */
@Data
public class ShopDTO implements ValueObject {

    private Long id;
    /**
     * 店铺名称
     */
    @NotBlank(message = "店铺名称不能为空")
    @Length(min = 1, max = 16, message = "店铺名称在1-16个字")
    private String shopName;
    /**
     * 店铺地图标点
     */
    @NotBlank(message = "店铺地图标点不能为空")
    @Length(min = 1, max = 100, message = "店铺地图标点长度在1-100个字")
    private String mapPunctuation;
    /**
     * 店铺地址
     */
    @Length(min = 0, max = 100, message = "店铺地址长度在0-100个字")
    private String address;
    /**
     * 店铺logo
     */
    @NotBlank(message = "店铺logo不能为空")
    private String logo;
    /**
     * 店铺图片
     */
    @NotBlank(message = "店铺图片不能为空")
    private String storeImages;
    /**
     * 店铺介绍
     */
    @NotBlank(message = "店铺介绍不能为空")
    @Length(min = 1, max = 400, message = "店铺介绍在1-400个字")
    private String remark;
    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^((1[0-9]))\\d{9}$", message = "手机号格式有误")
    private String mobile;
    /**
     * 客服电话最多30个字
     */
    @NotBlank(message = "客服电话不能为空")
    @Length(min = 1, max = 30, message = "客服电话在1-30个字")
    private String customerServicePhone;

    /**
     * 负责人姓名
     */
    @NotBlank(message = "负责人姓名不能为空")
    @Length(min = 1, max = 10, message = "负责人姓名在1-10个字")
    private String loser;

    /**
     * 商名主体名称
     */
    @NotBlank(message = "商名主体名称不能为空")
    @Length(min = 1, max = 200, message = "商名主体名称长度在1-200个字")
    private String mainName;
    /**
     * 省编号
     */
    @NotBlank(message = "省编号不能为空")
    @Length(min = 1, max = 20, message = "省编号长度在1-20个字")
    private String provinceCode;
    /**
     * 省的名称
     */
    @NotBlank(message = "省的名称不能为空")
    @Length(min = 1, max = 30, message = "省的名称长度在1-30个字")
    private String provinceName;
    /**
     * 市编号
     */
//    @NotBlank(message = "市编号不能为空")
    @Length(max = 20, message = "市编号长度在1-50个字")
    private String cityCode;
    /**
     * 市名称
     */
//    @NotBlank(message = "市名称不能为空")
    @Length(max = 30, message = "市名称长度在1-30个字")
    private String cityName;
    /**
     * 区编号
     */
    @Length(max = 20, message = "区编号长度在20个字以内")
    private String areaCode;
    /**
     * 区名称
     */
    @Length(max = 30, message = "区名称长度在1-30个字以内")
    private String areaName;

    /**
     * 注意事项
     */
//    @NotBlank(message = "注意事项不能为空")
//    @Length(min = 1, max = 200, message = "注意事项在1-200个字")
    private String noticeItems;
    /**
     * 场地说明
     */
    @NotBlank(message = "场地说明不能为空")
    @Length(min = 1, max = 200, message = "场地说明在1-200个字")
    private String placeRemark;
    /**
     * 营业时间
     */
    @NotBlank(message = "营业时间不能为空")
    @Length(min = 1, max = 200, message = "营业时间在1-200个字")
    private String businessHours;
    /**
     * 时间段
     */
    @NotBlank(message = "时间段不能为空")
    @Length(min = 1, max = 100, message = "时间段在1-100个字")
    private String timeQuantum;
    /**
     * 微信经度
     */
    @NotBlank(message = "微信经度不能为空")
    @Length(min = 1, max = 30, message = "微信经度长度在1-30个字")
    private String txLongitude;
    /**
     * 微信纬度
     */
    @NotBlank(message = "微信纬度不能为空")
    @Length(min = 1, max = 30, message = "微信纬度长度在1-30个字")
    private String txLatitude;

    /**
     * 打赏比例
     */
    @DecimalMax(value = "100", message = "打赏比例不能超过100")
    private BigDecimal rewardRatio;

    /**
     * 优惠信息
     */
    private String specialOffers;

    private SysUserEntityDTO user;


}
